package io.cici.cc.mybatis.plus.extension.toolkit;

import io.cici.cc.mybatis.plus.core.mapper.BaseMapper;
import io.cici.cc.mybatis.plus.extension.conditions.query.QueryChainWrapper;
import io.cici.cc.mybatis.plus.extension.conditions.update.UpdateChainWrapper;

/**
 * 快捷构造 chain 式调用的工具类
 */
public final class ChainWrappers {

    private ChainWrappers() {
        // ignore
    }

    /**
     * 链式查询 普通
     *
     * @return QueryWrapper 的包装类
     */
    public static <T> QueryChainWrapper<T> queryChain(BaseMapper<T> mapper) {
        return new QueryChainWrapper<>(mapper);
    }

    public static <T> QueryChainWrapper<T> queryChain(Class<T> entityClass) {
        return new QueryChainWrapper<>(entityClass);
    }

    /**
     * 链式更改 普通
     *
     * @return UpdateWrapper 的包装类
     */
    public static <T> UpdateChainWrapper<T> updateChain(BaseMapper<T> mapper) {
        return new UpdateChainWrapper<>(mapper);
    }

    public static <T> UpdateChainWrapper<T> updateChain(Class<T> entityClass) {
        return new UpdateChainWrapper<>(entityClass);
    }

}
